============================================================
        .::   MIRACULIX::.
============================================================

     
    Miraculix ;),  
 -     :)

,    :    :)

. ! :)

============================================================
[1]           .::  ::.
============================================================

     example.asm    
(www.kreoton.com/download.php)

  ,    ;):

;---   - PE
format PE

;---     :)
include "include\win32ax.inc"     ;   -  -
include "..\include\const.inc"    ;    www.kreoton.com/download.php

;---    
x_coord         = 100
y_coord         = 100
x_size          = 340
y_size          = 150

;---  
  start:
        ;---  
        call    Redraw
      ;---     
      Wait_Event:
        ;---  
        call    [WaitMessage]
        ;---  
        call    [StdHandler]
        ;---  
        jmp     Wait_Event

;---  
Redraw:
        ;---     (x_coord, y_coord),  (x_size, y_size), 
        ; "Hello world"   00101b (5)
        invoke  Draw_StdWindow, x_coord*65536+y_coord,x_size*65536+y_size,"Hello World!",00101b
        ;---      "Hello World!"   (x=15;y=0x16+10=32),
        ;   - 1,  - 4
        invoke  Write_Text,15,0x16+10,1,4,"Hello World!",eax
        ret


data import
;
; Import functions:
;

  library mx32,'mx32.dll'

  import mx32,\
         f1,'OneFunction',\
         VirtualAlloc,'VirtualAlloc',\
         VirtualProtect,'VirtualProtect',\
         VirtualFree,'VirtualFree',\
         CreateProcess,'CreateProcess',\
         ExitProcess,'ExitProcess',\
         CreateThread,'CreateThread',\
         ExitThread,'ExitThread',\
         TestKbdInput,'TestKbdInput',\
         PutChar,'PutChar',\
         PutChar2,'PutChar2',\
         PrintString,'PrintString',\
         Get_Position,'Get_Position',\
         Set_Position,'Set_Position',\
         Set_focus,'Set_focus',\
         Set_focusPID,'Set_focusPID',\
         Get_FileAddress,'Get_FileAddress',\
         Inkey,'Inkey',\
         SendMessage,'SendMessage',\
         ReceiveMessage,'ReceiveMessage',\
         WaitMessage,'WaitMessage',\
         GetPID,'GetPID',\
         DefineWindow,'DefineWindow',\
         DefineButton,'DefineButton',\
         Put_pixel,'Put_pixel',\
         Get_screen_param,'Get_screen_param',\
         Draw_BLine,'Draw_BLine',\
         Draw_Picture,'Draw_Picture',\
         Kill_Window,'Kill_Window',\
         Write_Text,'Write_Text',\
         WriteText,'WriteText',\
         Write_Hex,'Write_Hex',\
         Draw_StdWindow,'Draw_StdWindow',\
         StdHandler,'StdHandler',\
         Draw_hLine,'Draw_hLine',\
         Get_XYSize,'Get_XYSize',\
         Get_WinParams,'Get_WinParams',\
         End_of_redraw,'End_of_redraw',\
         Begin_xDraw,'Begin_xDraw',\
         Get_focus,'Get_focus',\
         Create_CheckButton,'Create_CheckButton',\
         Create_StdButton,'Create_StdButton'
end data

      :
1)  Write_Text -    WriteText,  
   -      , ..  :
       invoke  Write_Text,15,0x16+10,1,4,"Hello World!",eax   ;eax -    
  :
       invoke  WriteText,15,0x16+10,1,4,"Hello World!"

2)    (00101b),     :
   -  ,  /  :

  00000b -     "",    (disabled)
  00001b -  ""
  00010b -  "/"
  00100b -  ""
  
      ,   :
  00101b -  ""  ""
  
,     ,  .

============================================================
[2]           .::   MIRACULIX OS::.
============================================================

  ,         WaitMessage:
       call    [WaitMessage]

      StdHandler:
       call    [StdHandler]

    -  .
 MiraculixOS    :

EventID_Redraw     (1)  -  
EventID_Focus      (2)  -  
EventID_LostFocus  (3)  -  
EventID_Close      (4)  - 
EventID_MouseEvent (5)  - 
EventID_Ctrl0      (10) -     ,   :) -   
EventID_Ctrl1      (11) -   
EventID_Ctrl2      (12) - (      ,    )
EventID_Ctrl3      (13) -  
EventID_Maximize   (14) -  
EventID_Restore    (15) -  
EventID_DoubleClick(16) -  
EventID_Kbd        (20) -    
EventID_IPC        (50) -  

           :
1)      bh
2)     bl, esi  ebp

     (     ,  -   ):
        cmp     bx,(EventID_Ctrl3 shl 8) + 1

  :
bx = EventID_Ctrl3*256+1
..
bh = EventID_Ctrl3 -    
bl = 1 -  

  KolibriOS- ()   - :
        cmp     bx,EventID_Ctrl3*256+1
        
!       ,   :

        cmp     bx,EventID_Kbd  ; :  ?
        jne     wait_event      ; ,    
        shr     si,8            ;    8 
        
        cmp     si,[code]       ;        
        je      key_handler     ;  ,      

        ;...   
        
..           bl,    si (si shr 8)

:     si -  ascii- ,
   scan- .

     -  .

============================================================
[3]           .:: ::.
============================================================

        :),
     :)    ,    :

1)Draw_StdWindow -    
      Draw_StdWindow, coords,size,title,buttons,  coords -   (x_coord*65536+y_coord)
                                                 size -   (x_size*65536+y_size)
                                                 title -  
                                                 buttons -   ( . )
 :                                          
      invoke  Draw_StdWindow, 100*65536+100,150*65536+100,"Title",00101b

:   eax,   

2)Draw_BLine -  
      Draw_BLine x,y,w,h,color,window_id,  x,y,w,h -    
                                          color -  
                                          window_id -  ,   
                                             
 :                                          
      invoke  Draw_BLine,10,10,50,50,Client_Color,[WinID]

3)WriteText -    
      WriteText,x,y,color,font_id,Text,  x,y -  
                                        color -  
                                        font_id -   (4 -  )
                                        Text - ,    

 :                                          
      invoke  WriteText,10,10,1,4,"Text demo"
      
4)WriteHex -  16- 
      WriteHex, x,y,color,number,  x,y -    
                                  color -    
                                  number -   

 :                                          
      invoke  WriteHex, 70,(0x20+30),0,[key_code2]

  :

;============================================
; Key reader for Miraculix v 0.1 
;--------------------------------
; by mistifi(ator           
;============================================

format PE

;---    :)
include "include\win32ax.inc"
include "..\include\const.inc"  

;---    
x_coord         = 100
y_coord         = 100
x_size          = 150
y_size          = 100

;---    (- -  /  )
Client_Color    = 0xD4D0C8

;--- 
EventID_Redraw          = 1
EventID_Focus           = 2
EventID_LostFocus       = 3
EventID_Close           = 4
EventID_MouseEvent      = 5
EventID_Ctrl0           = 10
EventID_Ctrl1           = 11
EventID_Ctrl2           = 12
EventID_Ctrl3           = 13
EventID_Kbd             = 20
EventID_IPC             = 50

;---   ("","")
buttons   =  00101b
;---  
  start:
        ;---  
        call    Redraw
      ;---     
      Wait_Event:
        ;---  
        call    [WaitMessage]
        ;---  
        call    [StdHandler]

        ;---   ?
        cmp bh,EventID_Kbd
        jne Wait_Event ; ,    
        ;---     
        call readkey
        ;---  
        jmp     Wait_Event

;---  
Redraw:
        ;---     (x_coord, y_coord),  (x_size, y_size), 
        ; "Key Reader"   00101b (5)
        invoke  Draw_StdWindow, x_coord*65536+y_coord,x_size*65536+y_size,"Key Reader",buttons
        ;---    
        mov [WinID],eax
        ;---    
        ;   - 1,  - 4
        invoke  WriteText,10,(0x20+10),1,4,"Scan code:"
        invoke  WriteText,10,(0x20+30),1,4,"ASCII code:"
        ret

;---     
PrintKey:
        ;---     
        ;   - 1,  - 4
        invoke  WriteText,10,(0x20+10),1,4,"Scan code:"
        invoke  WriteText,10,(0x20+30),1,4,"ASCII code:"
        ;  , -  
        ;     
        invoke  Draw_BLine,70,(0x20+10),50,17,Client_Color,[WinID]
        invoke  Draw_BLine,70,(0x20+30),50,17,Client_Color,[WinID]
        ;  scan-
        invoke  WriteHex, 70,(0x20+10),0,[key_code]
        ;  ASCII-
        invoke  WriteHex, 70,(0x20+30),0,[key_code2]
        ret

;---  -  ascii-   si
readkey:
         push si
         ;---  scan-
         shr si,8
         mov word [key_code],si
         pop si
         ;---  ACSII 
         shl si,8
         shr si,8
         mov word [key_code2],si
         ;---   
         call PrintKey
        ret

;    scan-
key_code  dd 0

;    ascii-
key_code2 dd 0

;  
WinID     dd 0
data import
;
; Import functions:
;

  library mx32,'mx32.dll'

  import mx32,\
         f1,'OneFunction',\
         VirtualAlloc,'VirtualAlloc',\
         VirtualProtect,'VirtualProtect',\
         VirtualFree,'VirtualFree',\
         CreateProcess,'CreateProcess',\
         ExitProcess,'ExitProcess',\
         CreateThread,'CreateThread',\
         ExitThread,'ExitThread',\
         TestKbdInput,'TestKbdInput',\
         PutChar,'PutChar',\
         PutChar2,'PutChar2',\
         PrintString,'PrintString',\
         Get_Position,'Get_Position',\
         Set_Position,'Set_Position',\
         Set_focus,'Set_focus',\
         Set_focusPID,'Set_focusPID',\
         Get_FileAddress,'Get_FileAddress',\
         Inkey,'Inkey',\
         SendMessage,'SendMessage',\
         ReceiveMessage,'ReceiveMessage',\
         WaitMessage,'WaitMessage',\
         GetPID,'GetPID',\
         DefineWindow,'DefineWindow',\
         DefineButton,'DefineButton',\
         Put_pixel,'Put_pixel',\
         Get_screen_param,'Get_screen_param',\
         Draw_BLine,'Draw_BLine',\
         Draw_Picture,'Draw_Picture',\
         Kill_Window,'Kill_Window',\
         Write_Text,'Write_Text',\
         WriteText,'WriteText',\
         Write_Hex,'Write_Hex',\
         WriteHex,'WriteHex',\
         Draw_StdWindow,'Draw_StdWindow',\
         StdHandler,'StdHandler',\
         Draw_hLine,'Draw_hLine',\
         Get_XYSize,'Get_XYSize',\
         Get_WinParams,'Get_WinParams',\
         End_of_redraw,'End_of_redraw',\
         Begin_xDraw,'Begin_xDraw',\
         Get_focus,'Get_focus',\
         Create_CheckButton,'Create_CheckButton',\
         Create_StdButton,'Create_StdButton'
end data

 Fasm',   ,     ,   -> File Browser,
 (   /)   :),  enter     ;)

------------------------------------------------------------
  mistifi(ator   Kreoton'a
E-mail: bendik[@]bk[.]ru